package w83a.w83aOperacionesPaso.w83aActas;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONArray;
import org.json.JSONObject;

import w83a.w83aBeans.W83aActasBean;
import w83a.w83aBeans.W83aDocBean;
import w83a.w83aBeans.W83aHistorialActaBean;
import w83a.w83aBeans.W83aImpugnacionesBean;
import w83a.w83aBeans.W83aIncidenciaActaBean;
import w83a.w83aBeans.W83aTramiteActaBean;
import w83a.w83aUtilidades.W83aUtilidadesComunes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

public class W83aCargarListasOutOPAction extends Q70ActionPasoOP{

	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		//Guardamos la accion en el contexto
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

		String jJson = "";
		JSONObject resultado = new JSONObject ();	
		//docs adjuntos
		W83aActasBean acta=(W83aActasBean)contexto.get("w83aNuevaActaBean");
		JSONArray listaDocs=new JSONArray();
		JSONObject docJSON=new JSONObject();
		if(request.getParameter("accion").equals("documentos")){
			W83aDocBean doc=null;
//			HashMap datos=(HashMap)contexto.get("w83aMapaFileActas");
			for (int i=0;i<acta.getListaDocs().size();i++)
			{
				docJSON=new JSONObject();//NOPMD
				doc=(W83aDocBean)acta.getListaDocs().get(i);
				docJSON.put("nombreDoc", doc.getNombrePartido());
				//docJSON.put("tipoDoc", doc.getTipoDocumento());
				docJSON.put("descTipo", doc.getDescTipo());
				docJSON.put("descFase", doc.getDescFase());
				//docJSON.put("descTramite", doc.getDescTramite());
				docJSON.put("idDoc", doc.getId());
				if(StringUtils.isEmpty(doc.getFechaRegistro())){
					docJSON.put("fechaRegistro", "");
				}
				else{
					docJSON.put("fechaRegistro", doc.getFechaRegistro());
				}
				if(StringUtils.isEmpty(doc.getNumeroRegistro())){
					docJSON.put("numRegistro", "");
				}
				else{
					docJSON.put("numRegistro", doc.getNumeroRegistro());
				}
				
				
				//docJSON.put("usuario", doc.getUsuario());
				listaDocs.put(docJSON);

			}
			resultado.put("resultado", "ok");
			resultado.put("listaDocs",listaDocs);
			jJson=resultado.toString();
			
			
		}
		else if(request.getParameter("accion").equals("actasParciales")){
			W83aActasBean parcial=new W83aActasBean();
			parcial = (W83aActasBean)W83aUtilidadesComunes.inicializarPaginador(request, parcial);
			int num_paginas = (acta.getListaActasParciales().size()/Integer.parseInt(parcial.getTotal()));
			
			
			if(acta.getListaActasParciales().size()%Integer.parseInt(parcial.getTotal())>0){
				num_paginas++;
			}
			parcial.setRows(String.valueOf(num_paginas));
			
			List listaVariables = new ArrayList();
			listaVariables.add("numActa");
			listaVariables.add("numRegDefinitivo");
			listaVariables.add("fechaRegistroDefinitivo");
			listaVariables.add("numPreaviso");
			listaVariables.add("convenioTxt");
			listaVariables.add("fechaEntrada");
			listaVariables.add("fechaEleccion");
			listaVariables.add("fechaComision");
			listaVariables.add("fechaBaja");
			listaVariables.add("motivoBaja");
			listaVariables.add("electoresTotal");
			listaVariables.add("candidatosTotal");
			
			String varClave = null;
			
			
			jJson = W83aUtilidadesComunes.procesarTabla(acta.getListaActasParciales(),listaVariables,varClave,W83aActasBean.class, parcial);
			
			
			
			
			
		}
		else if(request.getParameter("accion").equals("impugnaciones")){
			/////
			W83aImpugnacionesBean impugnacionBean=new W83aImpugnacionesBean();
			impugnacionBean = (W83aImpugnacionesBean)W83aUtilidadesComunes.inicializarPaginador(request, impugnacionBean);
			int num_paginas = (acta.getListaImpugnaciones().size()/Integer.parseInt(impugnacionBean.getTotal()));
			
			
			if(acta.getListaImpugnaciones().size()%Integer.parseInt(impugnacionBean.getTotal())>0){
				num_paginas++;
			}
			impugnacionBean.setRows(String.valueOf(num_paginas));
			
			W83aActasBean actaTemp=(W83aActasBean)contexto.get("w83aDetalleActaTempBean");
			List listaImpugnaciones = new ArrayList();
			for(int i=0,size=acta.getListaImpugnaciones().size();i<size;i++){
				W83aImpugnacionesBean bean = new W83aImpugnacionesBean((W83aImpugnacionesBean)acta.getListaImpugnaciones().get(i));//NOPMD
				
				listaImpugnaciones.add(bean);
			}
			actaTemp.setListaImpugnaciones(listaImpugnaciones);
			contexto.set("w83aDetalleActaTempBean",actaTemp);
			
			
			List listaVariables = new ArrayList();
			listaVariables.add("num_impugnacion");	
			listaVariables.add("fecha_impugnacion");
			listaVariables.add("tipo");
			listaVariables.add("impugnante");
			listaVariables.add("sindicatos");
			listaVariables.add("dni_arbitro");
			listaVariables.add("nombre_arbitro");
			listaVariables.add("num_laudo");
			listaVariables.add("fech_laudo");
			listaVariables.add("fech_envio_juzgado");
			listaVariables.add("fech_sentencia");
			listaVariables.add("fech_baja_desest");
			
			String varClave = "num_impugnacion";
			
			
			jJson = W83aUtilidadesComunes.procesarTablaConId(acta.getListaImpugnaciones(),listaVariables,varClave,W83aImpugnacionesBean.class, impugnacionBean);
			
			
		}
		else if(request.getParameter("accion").equals("historial")){
			W83aHistorialActaBean historial=new W83aHistorialActaBean();
			historial = (W83aHistorialActaBean)W83aUtilidadesComunes.inicializarPaginador(request, historial);
			int num_paginas = (acta.getListaHistorial().size()/Integer.parseInt(historial.getTotal()));
			
			
			if(acta.getListaHistorial().size()%Integer.parseInt(historial.getTotal())>0){
				num_paginas++;
			}
			historial.setRows(String.valueOf(num_paginas));
			
			List listaVariables = new ArrayList();
			listaVariables.add("fecha_actuacion");
			listaVariables.add("descripcion");
			listaVariables.add("usuario");
			
			String varClave = null;
			
			
			jJson = W83aUtilidadesComunes.procesarTabla(acta.getListaHistorial(),listaVariables,varClave,W83aHistorialActaBean.class, historial);
		}
		else if(request.getParameter("accion").equals("tramitacion")){
			W83aTramiteActaBean tramite=new W83aTramiteActaBean();
			tramite = (W83aTramiteActaBean)W83aUtilidadesComunes.inicializarPaginador(request, tramite);
			int num_paginas = (acta.getListaTramitacion().size()/Integer.parseInt(tramite.getTotal()));
			
			
			if(acta.getListaTramitacion().size()%Integer.parseInt(tramite.getTotal())>0){
				num_paginas++;
			}
			tramite.setRows(String.valueOf(num_paginas));
			List listaVariables = new ArrayList();
			listaVariables.add("fase");
			listaVariables.add("desc_tramite");
			listaVariables.add("fecha_tramite");
			listaVariables.add("usuario_alta");
			listaVariables.add("fecha_alta");
			listaVariables.add("usuario_modif");
			listaVariables.add("fecha_modif");
			
			String varClave = null;
			
			
			jJson = W83aUtilidadesComunes.procesarTabla(acta.getListaTramitacion(),listaVariables,varClave,W83aTramiteActaBean.class, tramite);
			
		}
		else if(request.getParameter("accion").equals("incidencias")){
			W83aIncidenciaActaBean incidencia=new W83aIncidenciaActaBean();
			incidencia = (W83aIncidenciaActaBean)W83aUtilidadesComunes.inicializarPaginador(request, incidencia);
			int num_paginas = (acta.getListaIncidencias().size()/Integer.parseInt(incidencia.getTotal()));
			
			
			if(acta.getListaIncidencias().size()%Integer.parseInt(incidencia.getTotal())>0){
				num_paginas++;
			}
			incidencia.setRows(String.valueOf(num_paginas));
			
			List listaVariables = new ArrayList();
			listaVariables.add("numIncidencia");
			listaVariables.add("fecha");
			listaVariables.add("descripcion");
			listaVariables.add("dni");
			
			String varClave = "numIncidencia";
			
			
			jJson = W83aUtilidadesComunes.procesarTabla(acta.getListaIncidencias(),listaVariables,varClave,W83aIncidenciaActaBean.class, incidencia);
			
			
		}
		response.setContentType("text/javascript;charset=iso-8859-1");
		response.setHeader("Pragma", "cache");
		response.setHeader("Expires", "0");
		response.setHeader("Cache-Control", "private");
		response.setStatus(HttpServletResponse.SC_OK);
		PrintWriter out = response.getWriter();
		out.print(jJson);
		out.flush();
		
		return null;

				
		
		
	}
}
